import {fileURLToPath, URL} from 'node:url'

import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'


// https://vitejs.dev/config/
export default defineConfig({
    plugins: [vue(), vueJsx()],
    server: {
        //本地服务器主机名 配置后可以使用本地网络访问
        host: '0.0.0.0',
        //指定启动端口号
        port: 3002,
        //设为 true 时若端口已被占用则会直接退出，而不是尝试下一个可用端口
        strictPort: false,
        //服务器启动时自动在浏览器中打开应用程序,当此值为字符串时，会被用作 URL 的路径名
        open: true
    },
    build: {
        // 构建输出目录
        outDir: 'dist',
        // 静态资源目录
        assetsDir: 'assets',
        // 构建后是否生成source map（生产环境关闭）
        sourcemap: process.env.NODE_ENV !== 'production',
        // 压缩选项
        minify: 'terser',
        terserOptions: {
            compress: {
                drop_console: true,
                drop_debugger: true
            }
        },
        // 分包策略优化
        rollupOptions: {
            output: {
                manualChunks: (id) => {
                    if (id.includes('node_modules')) {
                        if (id.includes('vue')) {
                            return 'vue-vendor';
                        }
                        if (id.includes('ant-design')) {
                            return 'ui-vendor';
                        }
                        if (id.includes('@kangc/v-md-editor') || id.includes('markdown-it')) {
                            return 'editor-vendor';
                        }
                        return 'vendor';
                    }
                },
                chunkFileNames: 'js/[name]-[hash].js',
                entryFileNames: 'js/[name]-[hash].js',
                assetFileNames: 'assets/[name]-[hash].[ext]'
            }
        },
        // 启用gzip压缩
        reportCompressedSize: false,
        // 资源大小限制警告
        chunkSizeWarningLimit: 1000
    },
    resolve: {
        // 别名
        alias: {
            '@': fileURLToPath(new URL('./src', import.meta.url)),
            "comps": fileURLToPath(new URL('src/components', import.meta.url)),
            "views": fileURLToPath(new URL('src/views', import.meta.url)),
            "store": fileURLToPath(new URL('src/store', import.meta.url)),
            "utils": fileURLToPath(new URL('src/utils', import.meta.url)),
            "libs": fileURLToPath(new URL('src/libs', import.meta.url)),
            "api": fileURLToPath(new URL('src/api', import.meta.url)),
            "styles": fileURLToPath(new URL('src/styles', import.meta.url)),
        }
    },
    css: {
        preprocessorOptions: {
            scss: {
                additionalData: '@import \'@/assets/styles/abstracts/_variables.scss\';'
            },
            less: {
                modifyVars: {
                    // 在这里添加你想要修改的 Ant Design Vue 主题变量
                    // 例如，修改主色为蓝色
                    '@primary-color': "#f54325",
                    '@success-color': "#80b178",
                    '@warning-color': "#d8c49a",
                    '@error-color': "#d1786b",
                    '@heading-color': "#333333",
                    '@text-color': "#666666",
                    '@text-color-secondary': "#999999",
                },
                javascriptEnabled: true
            }

        },

    },
})
